<?php
/**
* 禁止浏览器进行缓存
*/
header("Expires: -1");
header("Cache-Control: no-cache");
header("Pragma: no-cache");
session_start();//开启session会话
require_once("./PDO_class.php");//引入封装的PDO类
require_once("./security_procedures.php");//引入安全防护
require_once("./config.php");//引入配置文件
require_once("./func.php");//引入功能函数
$DB=new DB($dbconfig);//实例化PDO类，加载配置
/**
* 实例化RSA加密类
* 加载公钥秘钥
*/
$RSA=new RSA(file_get_contents('E:\gongju\xampp\htdocs\ceshi\creativehome\api\public.txt'),file_get_contents('E:\gongju\xampp\htdocs\ceshi\creativehome\api\private.txt'));
$ac=$_GET["ac"];//获取用户进行的操作
/**
* 根据用户进行的操作对数据进行增删改查
*/
switch($ac){
	case 'EventTableloding'://事件表格初始化
		new sqlsafe();
		if(checktoken($_GET["token"]))
		{
			$where=array('the_story'=>$_GET["storyid"]);
			$returndata=array($DB->querys('event','',$where),gettoken($_SESSION["id"]));
			echo json_encode($returndata);
		}
		else
		{
			echo 403;
		}
		break;
	case 'ShowEvent'://事件详情
		new sqlsafe();
		if(checktoken($_GET["token"]))
		{
			$where=array('id'=>$_GET['id']);
			$tableData2=array();//成员数据
			$tableData3=array();//指向数据
			$tableData4=array();//属性数据
			$returnData=array();//返回数据
			$place='';//地点数据
			/**
			 * 组装成员数据
			 */
			$CLdata=explode('|',$DB->query('event','',$where,'member')['member']);
			if($CLdata[0]!='')
			{
				$i=0;
				for($count=0;$count<sizeof($CLdata);$i++)
				{
					$tableData2[$i]['id']=$CLdata[$count++];
					$tableData2[$i]['roleid']=$CLdata[$count++];
					$tableData2[$i]['name']=$CLdata[$count++];
					$tableData2[$i]['sex']=$CLdata[$count++];
					$tableData2[$i]['lead']=$CLdata[$count++];
				}
			}
			/**
			 * 组装指向数据
			 */
			$CLdata=explode('|',$DB->query('event','',$where,'point')['point']);
			if($CLdata[0]!='')
			{
				$i=0;
				$where2=array();
				for($count=0;$count<sizeof($CLdata);$i++)
				{
					$where2['id']=$CLdata[$count++];
					$tableData3[$i]=$DB->query('event','',$where2,'id,eventname,magnitude');
				}
			}
			/**
			 * 组装属性数据
			 */
			$CLdata=explode('|',$DB->query('event','',$where,'attribute')['attribute']);
			if($CLdata[0]!='')
			{
				for($count=0,$i=0;$count<sizeof($CLdata);$i++)
				{
					$tableData4[$i]['id']=$CLdata[$count++];
					$tableData4[$i]['attributename']=$CLdata[$count++];
					$tableData4[$i]['content']=$CLdata[$count++];
				}
			}
			$where3=array('id'=>$DB->query('event','',$where,'place')['place']);
			if(sizeof($DB->query('place','',$where3,'placename'))!=0)
			{
				$place=$DB->query('place','',$where3,'placename')['placename'];
			}
			else
			{
				$place="";
			}
			/**
			 * 组装返回数据
			 */
			$returnData['tableData2']=$tableData2;
			$returnData['tableData3']=$tableData3;
			$returnData['tableData4']=$tableData4;
			$returnData['place']=$place;
			$returnData['token']=gettoken($_SESSION['id']);
			echo json_encode($returnData);
		}
		else
		{
			echo 403;
		}
		break;
	case 'lodingoptions'://新建事件地点下拉列表
		new sqlsafe();
		if(checktoken($_GET["token"]))
		{
			$where=array('the_story'=>$_GET['id']);
			$returndata=array();
			/**
			 * 组装返回数据
			 */
			$returndata[0]=$DB->querys('place','',$where,'id,placename');
			$returndata[1]=gettoken($_SESSION['id']);
			echo json_encode($returndata);
		}
		else
		{
			echo 403;
		}
		break;
	case 'SubmitNewEvent'://新建事件
		new sqlsafe();
		if(checktoken($_GET['token']))
		{
			$where=array('the_story'=>$_GET['id']);
			$formdata=json_decode(file_get_contents("php://input"),true)['data'];
			$DB->insert('event',$formdata);
			$returndata=array();
			$returndata[0]=$DB->querys('event','',$where);
			$returndata[1]=gettoken($_SESSION['id']);
			echo json_encode($returndata);
		}
		else
		{
			echo 403;
		}
		break;
	case 'DeleteEvent'://删除事件
		new sqlsafe();
		if(checktoken($_GET['token']))
		{
			$where=array('id'=>$_GET['id']);
			$DB->del('event',$where);
			$where2=array('the_story'=>$_GET['storyid']);
			$returndata=array();
			$returndata[0]=$DB->querys('event','',$where2);
			$returndata[1]=gettoken($_SESSION['id']);
			echo json_encode($returndata);
		}
		else
		{
			echo 403;
		}
		break;
	case 'SubmitEditEvent'://提交编辑事件
		new sqlsafe();
		if(checktoken($_GET['token']))
		{
			$where=array('the_story'=>$_GET['id']);
			$formdata=json_decode(file_get_contents("php://input"),true)['data'];
			$where2=array('id'=>$_GET['EventId']);
			$DB->update('event',$formdata,$where2);
			$returndata=array();
			$returndata[0]=$DB->querys('event','',$where);
			$returndata[1]=gettoken($_SESSION['id']);
			echo json_encode($returndata);
		}
		else
		{
			echo 403;
		}
		break;
	case 'Pointloding'://新建转入初始化
		new sqlsafe();
		if(true)
		{
			$where=array('the_story'=>$_GET["id"]);
			$where2=array('id'=>$_GET['EventId']);
			$returndata=array();
			$oldpoint=$DB->query('event','',$where2,'point');
			if($oldpoint=='')
			{
				$CLdata=$DB->querys('event','',$where,'id,eventname');
				foreach($CLdata as $key=>$value)
				{
					if(in_array($_GET['EventId'],$value))
					{
						array_splice($CLdata,$key,1);
					}
				}
			}
			else
			{
				$CLdata=$DB->querys('event','',$where,'id,eventname');//所有事件
				$oldpoint=explode('|',$oldpoint['point']);//解析原有的转入数据
				$oldpointkey=0;//转入数据索引
				$CLdatalength=sizeof($CLdata);//所有事件长度
				$oldpointlenght=sizeof($oldpoint);//原有转入长度
				$CLdatakey=0;//所有事件索引
				/**
				 * 搜索所有事件中与原有转入数据中的相同事件
				 * 删除相同的事件，并将所有事件长度减1并重
				 * 置所有事件索引值。
				 */
				for(;$CLdatakey<$CLdatalength;)
				{
					/**
					 * 首先将自身剔除出数据
					 */
					if(array_search($_GET['EventId'],$CLdata[$CLdatakey]))
					{
						array_splice($CLdata,$CLdatakey,1);
						$CLdatalength--;
						$CLdatakey=0;
					}
					/**
					 * 遍历原有数据将重复的数据进行删除
					 */
					for(;$oldpointkey<$oldpointlenght;)
					{
						if(array_search($oldpoint[$oldpointkey],$CLdata[$CLdatakey]))
						{
							array_splice($CLdata,$CLdatakey,1);
							$CLdatalength--;
							$CLdatakey=0;
						}
						$oldpointkey++;
					}
					$oldpointkey=0;
					$CLdatakey++;
				}
			}
			$returndata[0]=$CLdata;
			$returndata[1]=gettoken($_SESSION['id']);
			echo json_encode($returndata);
		}
		else
		{
			echo 403;
		}
		break;
	case 'SubmitNewPoint'://添加转入
		new sqlsafe();
		if(checktoken($_GET['token']))
		{
			$where=array('id'=>$_GET['EventId']);
			$formdata=json_decode(file_get_contents("php://input"),true)['data'];
			if($DB->query('event','',$where,'point')=='')
			{
				$newdata=array('point'=>$formdata['point']);
				$DB->update('event',$newdata,$where);
			}
			else
			{
				$oldpoint=$DB->query('event','',$where,'point')['point'];
				$newdata=array('point'=>$oldpoint.'|'.$formdata['point']);
				$DB->update('event',$newdata,$where);
			}
			$tableData3=array();
			$CLdata=explode('|',$DB->query('event','',$where,'point')['point']);
			if($CLdata[0]!='')
			{
				$i=0;
				$where2=array();
				for($count=0;$count<sizeof($CLdata);$i++)
				{
					$where2['id']=$CLdata[$count++];
					$tableData3[$i]=$DB->query('event','',$where2,'id,eventname,magnitude');
				}
			}
			$returndata=array();
			$returndata[0]=$tableData3;
			$returndata[1]=gettoken($_SESSION['id']);
			echo json_encode($returndata); 
		}
		else
		{
			echo 403;
		}
		break;
	case 'MemberLoding'://添加成员初始化
		new sqlsafe();
		if(checktoken($_GET['token']))
		{
			$where=array('id'=>$_GET['EventId']);
			$where2=array('the_story'=>$_GET['storyid']);
			$returndata=array();
			$olddata=$DB->querys('event','',$where,'member')[0]['member'];
			if($olddata=="")
			{
				$returndata[0]=$DB->querys('role','',$where2,'id,name,sex,lead');
				$returndata[1]=gettoken($_SESSION['id']);
				echo json_encode($returndata);
			}
			else
			{
				/**
				 * 删除重复角色，避免重复添加
				 */
				$Cldata=explode('|',$olddata);
				$allmember=$DB->querys('role','',$where2,'id,name,sex,lead');//所有角色
				$allmemberlength=sizeof($allmember);//所有角色长度
				$allmemberkey=0;//所有角色索引
				for($count=0;$count<sizeof($Cldata);)
				{
					 for(;$allmemberkey<$allmemberlength;$allmemberkey++)
					 {
						 if(array_search($Cldata[$count+1],$allmember[$allmemberkey]))
						 {
							array_splice($allmember,$allmemberkey,1);
							$allmemberlength--;
						 }
					 }
					 $allmemberkey=0;
					 $count=$count+5;
				}
				$returndata[0]=$allmember;
				$returndata[1]=gettoken($_SESSION['id']);
				echo json_encode($returndata);
			}
		}
		else
		{
			echo 403;
		}
		break;
		/**
		 * 提交添加成员
		 */
	case 'SubmitNewMember':
		new sqlsafe();
		if(checktoken($_GET['token']))
		{
			$where=array('id'=>$_GET['EventId']);//事件id
			$formdata=json_decode(file_get_contents("php://input"),true)['data'];//添加数据
			$oldmember=$DB->query('event','',$where,'member')['member'];//原有的成员数据
			$returndata=array();//返回数据
			$uptableData=array();//更新数据
			if($oldmember=="")//如果原有数据为空则从1进行初始化
			{
				$where2=array('id'=>$formdata['roleid']);//添加的角色id
				$updata=$DB->query('role','',$where2,'id,name,sex,lead');//要添加角色的详情数据
				$newmember=array('member'=>'1'.'|'.$updata['id'].'|'.$updata['name'].'|'.$updata['sex'].'|'.$updata['lead']);//组装数据
				$DB->update('event',$newmember,$where);//添加数据
			}
			else
			{
				$analyzedata=explode('|',$oldmember);//解析旧数据
				$analyzedatalength=sizeof($analyzedata);//旧数据长度
				$lastmemberid=$analyzedata[$analyzedatalength-5]+1;//根据最后一个数据的id进行初始化
				$where2=array('id'=>$formdata['roleid']);//添加的角色id
				$updata=$DB->query('role','',$where2,'id,name,sex,lead');//要添加角色的详情数据
				$newmember=array('member'=>$oldmember.'|'.$lastmemberid.'|'.$updata['id'].'|'.$updata['name'].'|'.$updata['sex'].'|'.$updata['lead']);//组装数据
				$DB->update('event',$newmember,$where);//更新数据
			}
			$UpdatedData=explode('|',$DB->query('event','',$where,'member')['member']);//添加后的数据
			if($UpdatedData[0]!='')
			{
				$i=0;
				/**
				 * 组装最新的成员数据
				 */
				for($count=0;$count<sizeof($UpdatedData);$i++)
				{
					$uptableData[$i]['id']=$UpdatedData[$count++];
					$uptableData[$i]['roleid']=$UpdatedData[$count++];
					$uptableData[$i]['name']=$UpdatedData[$count++];
					$uptableData[$i]['sex']=$UpdatedData[$count++];
					$uptableData[$i]['lead']=$UpdatedData[$count++];
				}
			}
			$returndata[0]=$uptableData;
			$returndata[1]=gettoken($_SESSION['id']);
			echo json_encode($returndata);
		}
		else
		{
			echo 403;
		}
		break;
	case 'SubmitNewAttribute':
		new sqlsafe();
		if(checktoken($_GET["token"]))
		{
			
		}
		else
		{
			echo 403;
		}
}
?>